﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using System.Windows.Forms;
using ComunesMGI.Enum;

namespace ComunesMGI.Controles
{
    public abstract class TablaCamposCampo
    {
        protected string _titulo;
        protected bool _requerido;
        protected Control _campo;
        protected ErrorProvider _handlerError;

        public TablaCamposCampo(DataCampo dc)
        {
            _titulo = dc.Titulo;
            _requerido = dc.Requerido;
            _campo = crearControl(dc);
            _campo.Name = "ctrlCampo" + _titulo;
            _campo.Anchor = AnchorStyles.Left;
        }

        public Control getControl()
        {
            return _campo;
        }

        public DataCampo obtenerDataCampo()
        {
            return new DataCampo(obtenerTipoCampo(), _titulo, obtenerValorCampo(), _requerido,obtenerOpcionesCampo());
        }

        public void agregarValidacion(ErrorProvider er)
        {
            _handlerError = er;
            _campo.Validating +=new System.ComponentModel.CancelEventHandler(validar);
        }

        public bool esValido()
        {
            return _handlerError.GetError(_campo) == "";
        }

        protected abstract Control crearControl(DataCampo dc);
        protected abstract string obtenerValorCampo();
        protected abstract CampoSharepoint obtenerTipoCampo();
        protected abstract List<string> obtenerOpcionesCampo();
        protected abstract void validar(object sender, System.ComponentModel.CancelEventArgs e);
        
    }
}
